home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / tcp_ip / tnos / tnos100s / udpdump.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-30  |  1.4 KB  |  75 lines

  1. /* UDP packet tracing
  2.  * Copyright 1991 Phil Karn, KA9Q
  3.  */
  4. /* Mods by PA0GRI */
  5. #include <stdio.h>
  6. #include "global.h"
  7. #include "config.h"
  8. #include "mbuf.h"
  9. #include "netuser.h"
  10. #include "internet.h"
  11. #include "udp.h"
  12. #include "ip.h"
  13. #include "socket.h"
  14. #include "trace.h"
  15.  
  16. #ifdef TNOS_68K
  17. #define fprintf traceprintf
  18. #endif
  19.  
  20. void rwho_dump __ARGS((FILE *fp,struct mbuf **bpp));
  21.  
  22. /* Dump a UDP header */
  23. void
  24. udp_dump(fp,bpp,source,dest,check)
  25. FILE *fp;
  26. struct mbuf **bpp;
  27. int32 source,dest;
  28. int check;        /* If 0, bypass checksum verify */
  29. {
  30.     struct udp udp;
  31.     struct pseudo_header ph;
  32.     int16 csum;
  33.  
  34.     if(bpp == NULLBUFP || *bpp == NULLBUF)
  35.         return;
  36.  
  37.     fprintf(fp,"UDP:");
  38.  
  39.     /* Compute checksum */
  40.     ph.source = source;
  41.     ph.dest = dest;
  42.     ph.protocol = UDP_PTCL;
  43.     ph.length = len_p(*bpp);
  44.     if((csum = cksum(&ph,*bpp,ph.length)) == 0)
  45.         check = 0;    /* No checksum error */
  46.  
  47.     ntohudp(&udp,bpp);
  48.  
  49.     fprintf(fp," len %u",udp.length);
  50.     fprintf(fp," %u->%u",udp.source,udp.dest);
  51.     if(udp.length > UDPHDR)
  52.         fprintf(fp," Data %u",udp.length - UDPHDR);
  53.     if(udp.checksum == 0)
  54.         check = 0;
  55.     if(check)
  56.         fprintf(fp," CHECKSUM ERROR (%u)",csum);
  57.  
  58. #ifdef TNOS_68K
  59.     fprintf (fp, "\n");
  60. #else
  61.     putc('\n',fp);
  62. #endif
  63.  
  64.     switch(udp.dest){
  65. #ifdef RIP
  66.     case IPPORT_RIP:
  67.         rip_dump(fp,bpp);
  68. #endif
  69.     case IPPORT_RWHO:
  70.         rwho_dump(fp,bpp);
  71.     }
  72.  
  73. }
  74.  
  75.